/**
 * 
 * 广州锐鹏计算机科技有限公司（www.ruipengkj.com）
 * 
 * 
 * Copyright (c) 2011-2012 RUIPENGKJ.Co.Ltd. All rights reserved.
 * 
 * */
package com.ruipengkj.factory;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 
 * @author Roy Description: 专门生产用户服务的实现类，使用单例模式和工厂模式进行封装、 使用反射减低耦合度，加强程序的移植性
 * 
 */
public class ServerDaoFactory {
	// 所有工厂的日志都归类到Factory.log里面
//	private static Logger logger = LogFactory.getInstance().getLogger(
//			"Factory.log");
	private static ServerDaoFactory instance;// 当前的工厂实例

	// .....这里还有其它的ServerServiceIf.xxxxxIf

	// 初始化操作
	private ServerDaoFactory() {
	
	}
	
	// 获得对象
	public Object getObject(String key) {
		InputStream inStream = this.getClass().getResourceAsStream("/serverDao.properties");
		Properties pros = null;
		try {
			pros=new Properties();
			pros.load(inStream);
			Class<?> clazz = Class.forName(pros.getProperty(key));
			return clazz.newInstance();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		return null;
	}

	// 拿到当前工厂的实例
	public static ServerDaoFactory getInstance() {
		if (instance == null) {
			synchronized ("key") {
				instance = new ServerDaoFactory();
//				logger.info("创建一个客户端的工厂服务对象");
			}
		}
		return instance;
	}

}
